#include <QApplication>
#include <QDebug>  // 调试输出
#include "core/robot_system.h"

// 修复：暂时注释 DebugVisualizer 相关代码（未实现），后续实现后可恢复
// #include "debug_visualizer.h"  // 可视化类头文件（未实现）

/**
 * @brief 程序入口函数
 * @param argc 命令行参数个数
 * @param argv 命令行参数数组
 * @return int - 程序退出码（0=正常退出）
 */
int main(int argc, char *argv[])
{
    // 初始化 Qt 应用（必须在所有 Qt 对象前创建）
    QApplication a(argc, argv);
    a.setApplicationName("Robot Control System");  // 设置应用名称
    a.setApplicationVersion("1.0.0");              // 设置应用版本

    // 初始化机器人系统核心
    RobotSystem robot_system;
    if (!robot_system.init()) {
        qCritical() << "[Main] Robot system initialization FAILED! Exiting...";
        return -1;  // 初始化失败，退出程序
    }
    qDebug() << "[Main] Robot system initialized SUCCESSFULLY";

    // 修复：暂时注释可视化相关代码（未实现 DebugVisualizer）
    // // 初始化调试可视化界面
    // std::unique_ptr<DebugVisualizer> visualizer = std::make_unique<DebugVisualizer>();
    // visualizer->show();  // 显示可视化窗口
    // 
    // // 连接机器人状态更新信号到可视化界面（实时显示状态）
    // QObject::connect(&robot_system, &RobotSystem::stateUpdated,
    //                  visualizer.get(), &DebugVisualizer::updateStateDisplay);

    // 启动 Qt 事件循环（程序主循环，阻塞直到应用退出）
    return a.exec();
}